<template>
  <div></div>
</template>

<script setup>
import { ref } from "vue";
const mainArray = ref([
  {
    deviceId: "2778006484",
    parsedJSON: [
      {
        identifier: "pressure",
      },
    ],
  },
  {
    deviceId: "2843274115",
    parsedJSON: [
      {
        identifier: "pressure",
      },
    ],
  },
  {
    deviceId: "1278083510",
    parsedJSON: [
      {
        identifier: "b_cur",
      },
      {
        identifier: "c_cur",
      },
      {
        identifier: "d_cur",
      },
      {
        identifier: "b_occupation",
      },
    ],
  },
  {
    deviceId: "2427431726",
    parsedJSON: [
      {
        identifier: "b_cur",
      },
      {
        identifier: "c_cur",
      },
      {
        identifier: "d_cur",
      },
      {
        identifier: "b_occupation",
      },
    ],
  },
]);
const addArray = ref([
  {
    deviceId: "1278083510",
    name: "Alice",
    age: 30,
    occupation: "Engineer",
    email: "alice@example.com",
    parsedJson: {
      b_cur: 11,
      c_cur: 55,
      d_cur: 30,
      b_occupation: 21,
    },
  },
  {
    deviceId: "2427431726",
    name: "Alice",
    age: 30,
    occupation: "Engineer",
    email: "alice@example.com",
    parsedJson: {
      b_cur: 12131,
      c_cur: 9995,
      d_cur: 3330,
      b_occupation: 2331,
    },
  },
  {
    deviceId: "2843274115",
    name: "Alice",
    age: 30,
    occupation: "Engineer",
    email: "alice@example.com",
    parsedJson: {
      pressure: 66,
    },
  },
  {
    deviceId: "2778006484",
    name: "Alice",
    age: 30,
    occupation: "Engineer",
    email: "alice@example.com",
    parsedJson: {
      pressure: 77,
    },
  },
  {
    id: 1,
    name: "17303148888",
    age: 30,
    occupation: "Engineer",
    email: "alice@example.com",
    parsedJson: {
      id: 1,
      name: "Alice",
      age: 30,
      occupation: "Engineer",
      email: "alice@example.com",
    },
  },
  {
    id: 1,
    name: "Alice",
    age: 30,
    occupation: "Engineer",
    email: "alice@example.com",
    parsedJson: {
      id: 1,
      name: "Alice",
      age: 30,
      occupation: "Engineer",
      email: "alice@example.com",
    },
  },
]);

/**
 * 方法描述 ：
 *      两个数组对象 main数组中的一个对象(这里面有一个标识 id1)里面的一个属性是一个数组对象，里面还有一个标识(作为属性值) flag:'标识名'
 *      第二个数组对象 addArr中的一个对象(这里面有一个标识 id1)里面的一个属性是一个数组对象，里面还有一个标识(作为属性名) 标识名: xxx
 *  目标：将第二个数组对象中 id和标识名都匹配的那个属性的属性值赋值到第一个数组中与 flag同级，可以用 value 作为属性名 {flag:'标识名',value:xxx}
 */

function mergeArrays(mainArray, addArray) {
  // 遍历addArray
  addArray.forEach((item) => {
    // 查找mainArray中deviceId与当前item.deviceId匹配的项    find 数组中搜索特定条件的元素 返回找到的 item
    const matchingItemInMainArray = mainArray.find(
      (mainItem) => mainItem.deviceId === item.deviceId
    );

    if (matchingItemInMainArray) {
      // 如果找到了匹配的deviceId
      const parsedJsonToAdd = item.parsedJson;
      //   parsedJson: {
      //   b_cur: 12131,
      //   c_cur: 9995,
      //   d_cur: 3330,
      //   b_occupation: 2331,
      // },

      // 遍历parsedJsonToAdd的属性
      Object.keys(parsedJsonToAdd).forEach((key) => {
        // 在mainArray的parsedJSON中查找是否有匹配的identifier
        const identifierMatch = matchingItemInMainArray.parsedJSON.find(
          (jsonObj) => jsonObj.identifier === key
        );

        if (identifierMatch) {
          // 如果找到匹配的identifier，则更新其值
          identifierMatch.value = parsedJsonToAdd[key];
        } else {
          // 如果没有匹配的identifier，则添加新的对象到parsedJSON
          matchingItemInMainArray.parsedJSON.push({
            identifier: key,
            value: parsedJsonToAdd[key],
          });
        }
      });
    }
  });
}

// 调用函数
mergeArrays(mainArray.value, addArray.value);

console.log(mainArray.value, addArray.value, "8888888");
</script>

<style lang="scss" scoped></style>
